package com.gameley.dmgtpf.common.base;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 
 **
 * @qualiFild com.gameley.dmgtpf.common.base.PubBaseMapper.java<br>
 * @author：LiBencheng<br>
 * @date Created on 2021年7月27日<br>
 * @version 1.0<br>
 */
public interface PubBaseMapper<T> extends BaseMapper<T>
{

    /**
     * *********************************************************** <br>
     * *说明：执行sql <br>
     * @see <br>
     * @param insql
     * @return <br>
     * @int <br>
     * @methods .PubBaseMapper#insertSQL <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:22:59 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Insert("${insql}")
    int insertSQL(@Param("insql") String insql);
    
    /**
     * *********************************************************** <br>
     * *说明：获取当前表里面的id <br>
     * @see <br>
     * @param tableName
     * @return <br>
     * @Integer <br>
     * @methods .PubBaseMapper#selectMaxId <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:22:52 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("SELECT MAX(id) FROM ${tableName}")
    Integer selectMaxId(@Param("tableName") String tableName);
    
    /**
     * *********************************************************** <br>
     * *说明：获取当前表里面的id，并且+1 <br>
     * @see <br>
     * @param tableName
     * @return <br>
     * @Integer <br>
     * @methods .PubBaseMapper#selectIdAdd <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:22:17 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("SELECT ( CASE  WHEN id IS NULL THEN 1 ELSE id + 1 END ) id FROM ( SELECT MAX( id ) id FROM  ${tableName} )temp ")
    Integer selectIdAdd(@Param("tableName") String tableName);
    
    /**
     * *********************************************************** <br>
     * *说明： <br>
     * @see <br>
     * @param tableName
     * @return <br>
     * @Object <br>
     * @methods .PubBaseMapper#selectReObjByTable <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:20 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("SELECT * FROM  ${tableName} ")
    Object selectReObjByTable(@Param("tableName") String tableName);
    
    /**
     * *********************************************************** <br>
     * *说明： <br>
     * @see <br>
     * @param selsql
     * @return <br>
     * @Object <br>
     * @methods .PubBaseMapper#selectReObj <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:28 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("${selsql}")
    Object selectReObj(@Param("selsql") String selsql);
    
    /**
     * *********************************************************** <br>
     * *说明： <br>
     * @see <br>
     * @param selsql
     * @return <br>
     * @Map <br>
     * @methods .PubBaseMapper#selectReMap <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:35 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("${selsql}")
    Map selectReMap(@Param("selsql") String selsql);
    
    /**
     * *********************************************************** <br>
     * *说明： <br>
     * @see <br>
     * @param selsql
     * @return <br>
     * @List <br>
     * @methods .PubBaseMapper#selectReList <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:39 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select("${selsql}")
    List selectReList(@Param("selsql") String selsql);
    
    /**
     * *********************************************************** <br>
     * *说明： 查询总条数<br>
     * @see <br>
     * @param tableName
     * @return <br>
     * @int <br>
     * @methods .PubBaseMapper#getCount <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:47 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select(value = "select count(*) as cou from ${tableName}")
    int getCount(@Param("tableName") String tableName);
    
    /**
     * *********************************************************** <br>
     * *说明：分页查询 <br>
     * @see <br>
     * @param map
     * @param tableName
     * @return <br>
     * @List<Map> <br>
     * @methods .PubBaseMapper#pageList <br>
     * @author LiBencheng <br>
     * @date Created on 2021年7月21日 <br>
     * @time 下午4:23:53 <br>
     * @version 1.0 <br>
     *************************************************************          <br>
     */
    @Select(value = "select * from ${tableName}  limit #{pageNo},#{pageSize}")
    List<Map> pageList(Map map, @Param("tableName") String tableName);
    
}
